package com.sykj.controller;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sykj.bean.BisShopUserPage;
import com.sykj.service.BisShopUserService;
import com.sykj.util.reponse.BaseResponse;
import com.sykj.bean.bis.BisShopUser;
import com.sykj.util.reponse.CommonEnum;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

/**
 *  店铺员工信息表 ： bis_shop_user
 * 开发人员：李家豪
 * 开发时间：2020年7月16日10点58分
 */
@CrossOrigin
@RestController
public class BisShopUserController {

    @Autowired
    private BisShopUserService bisShopUserService;

    @Autowired
    private RedisTemplate redisTemplate;

    /**
     *  开发人员：李家豪
     *  开发时间：2020年7月18日10点26分
     *  请求方式 ：get
     * 业务功能：综合查询+分页查询+综合显示
     * 查询条件
     * @param :
     * @return
     */
    @GetMapping(value = "bisShopUser/querys")
    public BaseResponse querys(BisShopUserPage bisShopUserPage){

//        Map map=(Map)redisTemplate.opsForValue().get("bis/user");
//        bisShopUserPage.setShopUserId((String) map.get("shopId"));

       Page pages= new Page<>(bisShopUserPage.getPage(),bisShopUserPage.getLimit());
        IPage<BisShopUser> querys = bisShopUserService.querys(pages, bisShopUserPage);

        return new BaseResponse(CommonEnum.LAYUI_SUCCESS,querys);
    }
    /**
     *  开发人员：李家豪
     *  开发时间：2020年7月23日9点13分
     *  请求方式 ：post
     * 业务功能：使用shiro框架 登陆 并将 shopUserId存入redis中
     * @param :
     * @return
     */
    @PostMapping("bisShopUser/login")
    public BaseResponse login(BisShopUser bisShopUser){
        bisShopUser.setPhoto(null);
        // 添加用户认证信息
        UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(bisShopUser.getAccount(), bisShopUser.getPassword());
        // 进行验证，这里可以捕获异常，然后返回对应信息
        SecurityUtils.getSubject().login(usernamePasswordToken);

        BisShopUser user  =  bisShopUserService.selectByBisUser(bisShopUser);
        Map map =new HashMap();
        map.put("shopUserId",user.getShopUserId());//存储这个人的id
        map.put("postCode",user.getPostCode());//存储这个人的身份
        map.put("shopId",user.getShopId());

        redisTemplate.opsForValue().set("bis/user",map);

      return new BaseResponse(CommonEnum.SHIO_DLCG,map);
    }

    /**
     *  开发人员：李家豪
     *  开发时间：2020年7月23日15点58分
     *  请求方式 ：get
     * 业务功能：查询shopUserId对应的账号信息
     * @param :
     * @return
     */
    @GetMapping("bisShopUser/dzxx")
    public BaseResponse dzxx(){

        BisShopUser bisShopUser=new BisShopUser();
        Map map=(Map)redisTemplate.opsForValue().get("bis/user");

        BisShopUser user =bisShopUserService.queryById(map.get("shopUserId"));
//        Wrapper<BisShopUser> wrapper =new QueryWrapper(bisShopUser);
//        BisShopUser user  =  bisShopUserService.getOne(wrapper);

        return new BaseResponse(CommonEnum.SHIO_DLCG,user);
    }



    /**
     *  开发人员：李家豪
     *  开发时间：2020年7月23日15点58分
     *  请求方式 ：get
     * 业务功能：查询shopUserId对应的账号信息
     * @param :
     * @return
     */
    @GetMapping("bisShopUser/yggz")
    public BaseResponse yggz(BisShopUserPage bisShopUserPage){

        Page page =new Page(bisShopUserPage.getPage(),bisShopUserPage.getLimit());
        IPage<BisShopUserPage> yggz = bisShopUserService.yggz(page, bisShopUserPage);


        return new BaseResponse(CommonEnum.LAYUI_SUCCESS,yggz);
    }











}
